profiles=dev
namespace=8d640792-0d54-468c-86d6-53fc976efc40
DISCOVERY_IP=192.168.8.98
DISCOVERY_SERVER=192.168.8.98:8848

if [ ! -d logs ]; then 
mkdir logs 
fi

#使用说明，用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status] app_jar_name [port]"
exit 1
}

#检查程序是否在运行
is_exist(){
if [ -n "$APP_PORT" ]; then
pid=`ps -ef|grep ${APP_NAME} | grep server.port=$APP_PORT | grep -v grep |grep -v service|awk '{print $2}' `
else
pid=`ps -ef|grep ${APP_NAME} | grep -v grep |grep -v service|awk '{print $2}' `
fi
#如果不存在返回1，存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}

#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
#nohup java -jar $APP_NAME > /dev/null 2>&1 &
#echo "starting $APP_NAME"
echo $APP_PORT
if [ -n "$APP_PORT" ]; then

nohup java -Xms128m -Xmx256m -Duser.timezone=GMT+08 \
-jar ${APP_NAME} \
--spring.profiles.active=$profiles \
--server.port=$APP_PORT \
--spring.cloud.nacos.config.namespace=$namespace \
--spring.cloud.nacos.discovery.namespace=$namespace \
--spring.cloud.nacos.discovery.ip=$DISCOVERY_IP \
--spring.cloud.nacos.discovery.server-addr=$DISCOVERY_SERVER \
--spring.cloud.nacos.config.server-addr=$DISCOVERY_SERVER \
> logs/${APP_NAME}_$APP_PORT.log 2>&1 &

echo "${APP_NAME} start at `hostname -I` with port $APP_PORT "

else

nohup java -Xms128m -Xmx256m -Duser.timezone=GMT+08 \
-jar ${APP_NAME} \
--spring.profiles.active=$profiles \
--spring.cloud.nacos.config.namespace=$namespace \
--spring.cloud.nacos.discovery.namespace=$namespace \
--spring.cloud.nacos.discovery.ip=$DISCOVERY_IP \
--spring.cloud.nacos.discovery.server-addr=$DISCOVERY_SERVER \
--spring.cloud.nacos.config.server-addr=$DISCOVERY_SERVER \
> logs/${APP_NAME}.log 2>&1 &

echo "${APP_NAME} start at `hostname -I`"
fi
fi

}

#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}

#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}

#重启
restart(){
stop
start
}
#根据输入参数，选择执行对应方法，不输入则执行使用说明
if [ -n "$2" ]; then

APP_NAME="$2"
APP_PORT=""
 if ! echo $3 | grep -q '[^0-9]'
 then
  APP_PORT=$3
 fi

case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
else
usage
fi
